﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MMSA.Services.SharedServices;
using SmartProcess.Core.Commons.Tracing;
using MMSA.Entities.ProductTableAdapters;
using System.Configuration;
using MMSA.Entities.PedidoTableAdapters;

namespace MMSA.Services.Services
{
    public class OrderManagementService : IDataManagementService
    {
        private TracingService tracing = new TracingService("MMSA.Services");
        string traceServicio = string.Empty;
        public void MassiveProductUpload(string fileName, string fileExtension)
        {
            try
            {
                var dataTable = new DataTable("PED_PEDIDO");

                traceServicio = "Antes de cargar desde archivo excel: " + fileName;

                dataTable.GetDataFromExcelSpreadsheet(fileName, fileExtension);
                MMSA.Entities.Pedido.PED_PEDIDODataTable pedido = new Entities.Pedido.PED_PEDIDODataTable();
                
                traceServicio = "Antes de recorrer las columnas de orden";
				PED_PEDIDOTableAdapter adapter = new PED_PEDIDOTableAdapter();
				adapter.ConnectionString = ConfigurationManager.AppSettings["conection"];
                foreach (DataRow item in dataTable.Rows)
				{
					//    var row = pedido.NewPED_PEDIDORow();
					//    for (int i = 0; i < dataTable.Columns.Count; i++)
					//    {
					//        traceServicio = "Se cayo al leer la Columna: " + dataTable.Columns[i].ColumnName + " ,revise si el archivo subido pertenece al formato correcto.";

					//        row[dataTable.Columns[i].ColumnName] = Convert.ChangeType(item[dataTable.Columns[i].ColumnName],
					//            pedido.Columns[dataTable.Columns[10].ColumnName].DataType);
					//    }
					//    pedido.AddPED_PEDIDORow(row);
					traceServicio = "Antes de generar el upsert de actualización e inserción.";
					
					adapter.sp_inserta_pedido(item["ped_id"].ToString(), item["usu_id"].ToString(), 
						item["loc_id"].ToString(), Convert.ToDecimal(item["ped_latitud"]), 
						Convert.ToDecimal(item["ped_longitud"]), DateTime.Parse(item["ped_fecha_inicio"].ToString()), 
						DateTime.Parse(item["ped_fecha_fin"].ToString()));
                }
				
                //pedido.Upsert("ped_id");
            }
            catch (Exception exception)
            {
                if (exception != null)
                    tracing.ErrorFormat("MMSA.Services.Services.OrderManagementService ==> TRACE: {0}, ==> ERROR: {1}, ==> STACKTRACE: {2}", traceServicio, exception.Message, exception.StackTrace);
                throw;
            }
           
        }
    }
}
